/*=============================================================
(c) YEAR by AUTHOR
All rights reserved.
================================================================*/

namespace Open_MUD.Mudlib.lib.Interactive{
   
   class Caracteristicas{
      private int fuer,mfue,tfue;
      private int cons,mcon,tcon;
      private int dest,mdes,tdes;
      private int inte,mint,tint;
      private int cari,mcar,tcar;
      private int sabi,msab,tsab;
      
      private int fort,tfor;
      private int refl,tref;
      private int volu,tvol;      
      
      public Caracteristicas (string cfue, string ccon, string cdes, string cint, string ccar, string csab, string cfor, string cref, string cvol)
      {
           //TODO: convertir String a int
         fuer = System.Int32.Parse(cfue);
         cons = System.Int32.Parse(ccon);
         dest = System.Int32.Parse(cdes);
         inte = System.Int32.Parse(cint);
         cari = System.Int32.Parse(ccar);
         sabi = System.Int32.Parse(csab);
         fort = System.Int32.Parse(cfor);
         refl = System.Int32.Parse(cref);
         volu = System.Int32.Parse(cvol);
         tfue = tcon = tdes = tint = tcar = tsab = tfor = tref = tvol = 0;
	         updateModificadores();         
      }
      
      public Caracteristicas (int cfue, int ccon, int cdes, int cint, int ccar, int csab, int cfor, int cref, int cvol)
      {
         fuer = cfue;
         cons = ccon;
         dest = cdes;
         inte = cint;
         cari = ccar;
         sabi = csab;
         fort = cfor;
         refl = cref;
         volu = cvol;
         tfue = tcon = tdes = tint = tcar = tsab = tfor = tref = tvol = 0;
	         updateModificadores();         
      }
      
      public void setCaracteristicas(int cfue, int ccon, int cdes, int cint, int ccar, int csab, int cfor, int cref, int cvol)
      {         
             fuer = cfue;
	         cons = ccon;
	         dest = cdes;
	         inte = cint;
	         cari = ccar;
	         sabi = csab;
	         fort = cfor;
	         refl = cref;
	         volu = cvol;
	         tfue = tcon = tdes = tint = tcar = tsab = tfor = tref = tvol = 0;
	         updateModificadores();
                
      }
      
      void updateModificadores()
      {         
         mfue = getModificador(fuer);
	         mcon = getModificador(cons);
	         mdes = getModificador(dest);
	         mint = getModificador(inte);
	         mcar = getModificador(cari);
	         msab = getModificador(sabi);
	         mfue = getModificador(fuer);	         
      }
      
      private int getModificador (int valor)
      {         
         if ( valor > 9 )
         {            
             if ( valor > 15 )
             {
                if ( valor > 17)
                {
                   if ( valor > 19)
                   {  
                     return 5;                      
                   }else
                      return 4;                    
                }else
                   return 3;
             }else
             {
                if ( valor > 13 )
                {
                   return 2;
                }else
                {
                   if ( valor >11 )
                   {
                      return 1;
                   }else
                      return 0;
                }
             }
         }else
         {
              if ( valor > 5)
              {
                 if (valor > 7)
                 {
                    return -1;
                 }else
                 {
                    return -2;
                 }
              }else
              {
                 if ( valor > 3 )
                 {
                    return -3;
                 }else
                 {
                    if (valor > 1)
                    {
                       return -4;
                    }else
                    {
                       if ( valor > 0)
                       {
                          return -5;
                       }else
                          return -3333;
                    }
                 }
              }  
         }
      }
      
      public int Fuerza{
         get{ return fuer + tfue;}
      }
      
      public int Constitucion{
         get{ return cons + tcon;}
      }      
      
      public int Destreza{
         get{ return dest + tdes;}
      }      
      
      public int Inteligencia{
         get{ return inte + tint;}
      }      
      
      public int Carisma{
         get{ return cari + tcar;}
      }      
      
      public int Sabiduria{
         get{ return sabi + tsab;}
      }
      
      public int Fortaleza{
         get{ return fort + tfor;}
      }      
      
      public int Reflejos{
         get{ return refl + tref;}
      }      
      
      public int Voluntad{
         get{ return volu + tvol;}
      }    
      public int Fue{
         get{ 
            if  (tfue == 0) 
               return mfue;
            else
               return getModificador(fuer + tfue);
         }
      }
      
      public int Con{
         get{
            if (tcon == 0) 
               return mcon;
            else
               return getModificador(cons + tcon);             
          }
      }      
      
      public int Des{
         get{
            if ( tdes == 0 ) 
               return mdes;
            else
               return getModificador(dest + tdes);
         }
      }      
      
      public int Int{
         get{
            if ( tint == 0) 
               return mint;
            else
               return getModificador(inte + tint);
         }
      }      
      
      public int Car{
         get{ 
            if ( tcar == 0 )
               return mcar;
            else
               return getModificador(cari + tcar); 
         }
      }      
      
      public int Sab{
         get{ if ( tsab == 0 )
                 return msab;
              else
                 return getModificador(sabi + tsab);
         }                 
      }
      
      
   }
   
   
}
